import Vue from 'vue'
import Vuex from 'vuex'
import { getItem, setItem, removeItem } from '../utils/localStorage'

Vue.use(Vuex)

export default new Vuex.Store({
  // 全局变量
  state: {
    token: getItem('token') || '',
    tabIdx: 1
  },
  // 异步方法用actions
  // actions不能直接修改全局变量，需要调用commit方法来触发mutation中的方法
  actions: {
    login (context, payload) {
      context.commit('login', payload)
    },
    logout (context) {
      context.commit('logout')
    }
  },
  // 修改全局变量必须通过mutations中的方法
  // mutations只能采用同步方法
  mutations: {
    login (state, token) {
      state.token = token
      setItem('token', token)
    },
    logout (state) {
      state.token = ''
      removeItem('token')
    },
    /* 设置底部导航栏状态 */
    setTab (state, status) {
      state.tabIdx = status
    }
  }
})
